package com.zshan.clinic.admin.mapper.medical;


import com.zshan.clinic.admin.entity.vo.*;
import com.zshan.clinic.mybatis.SuperMapper;
import org.apache.ibatis.annotations.Param;

import java.time.LocalDate;
import java.util.List;

public interface SpecClinicFollowupMapper extends SuperMapper {

    /**
     * 查询随访列表
     * @param clinicId
     * @param doctorList
     * @param patientName
     * @param followupDate
     * @param offset
     * @param limit
     * @return
     */
    List<ClinicFollowupPageVo> getFollowupList(@Param("clinicId") Long clinicId,
                                               @Param("doctorList") List<Long> doctorList,
                                               @Param("patientName") String patientName,
                                               @Param("followupDate") LocalDate followupDate,
                                               @Param("offset") Integer offset,
                                               @Param("limit") Integer limit);

    /**
     * 获取随访详情
     * @param followupId
     * @return
     */
    ClinicFollowupDetailVo getFollowupDetail(@Param("clinicId") Long clinicId,@Param("followupId") Long followupId);

    /**
     * 获取患者随访历史记录
     * @param patientId
     * @param offset
     * @param limit
     * @return
     */
    List<ClinicFollowupRecordVo> getRecordList(@Param("clinicId") Long clinicId,
                                               @Param("patientId") Long patientId,
                                               @Param("offset") Integer offset,
                                               @Param("limit") Integer limit);

    /**
     * 查询患者随访数
     * @param clinicId
     * @param patientId
     * @param visitDate
     * @return
     */
    Long getPatientMedicalCount(@Param("clinicId") Long clinicId,
                                @Param("patientId") Long patientId,
                                @Param("visitDate") LocalDate visitDate);

    /**
     * 查询患者随访记录
     * @param clinicId
     * @param patientId
     * @param visitDate
     * @param offset
     * @param limit
     * @return
     */
    List<ClinicFollowupPatientVo> getPatientMedicalList(@Param("clinicId") Long clinicId,
                                                        @Param("patientId") Long patientId,
                                                        @Param("visitDate") LocalDate visitDate,
                                                        @Param("offset") Integer offset,
                                                        @Param("limit") Integer limit);

    /**
     * 查询进入未随访数
     * @param followupDate
     * @return
     */
    List<UnFollowupVo> getUnFollowupList(@Param("followupDate") LocalDate followupDate);
}
